import axios from "axios";
import store from "@/store/store";
//创建一个axios实例对象
const httpInstance = axios.create({
    baseURL:'http://apis.imooc.com/api/',
})
//请求拦截器,在发起请求之前显示正在加载，在请求到数据后不显示加载
httpInstance.interceptors.request.use(function(config){
    //发起请求之前，显示loading的效果,并且没有错误提示和信息
    store.commit('setLoading',true)
    store.commit('setError',{status:false,message:''})
    //get请求，添加到url中
    config.params = {...config.params,icode:'B81DD36EF13AAC10'}
    //如果是上传文件，添加到FormData中
    if(config.data instanceof FormData){
        config.data.append('icode','B81DD36EF13AAC10')
    }else{
         //普通的body对象，添加到data中
        config.data = {...config.data,icode:'B81DD36EF13AAC10'}
    }
    //动态获取token的值
    const token = store.state.token
    if(token){
        config.headers.Authorization = `Bearer ${token}`
    }
    return config
},(error)=>{
    return Promise.reject(error)
})

//axios的响应拦截器,
httpInstance.interceptors.response.use(function (response) {
    //获取数据之后，取消显示loading的效果
    store.commit('setLoading',false)
    return response;
  }, e =>{
    //如果请求产生错误的结果或者是token值失效，将错误信息返回store中的mutations进行处理
    console.log("获取错误的响应",e.response)
    const {error} = e.response.data
    store.commit('setError',{status:true,message:error})
    store.commit('setLoading',false)
    return Promise.reject(error)
  });

export default httpInstance